Batch Apex Execution এবং Batch Size Optimization

Computer Programming - এপেক্স (Apex) Apex Batch Processing (Apex Batch Processing) |
240
240

Batch Apex Execution এবং Batch Size Optimization হলো Salesforce-এ Batch Apex সঠিকভাবে সম্পাদনের জন্য গুরুত্বপূর্ণ দুটি দিক। Batch Execution প্রক্রিয়াকরণের কাজকে ছোট ছোট অংশে ভাগ করে কার্যক্ষমতা বাড়ায়, এবং Batch Size Optimization সঠিক ব্যাচ সাইজ নির্ধারণ করে গভর্নর লিমিট মেনে কার্যক্ষমতা নিশ্চিত করে।


Batch Apex Execution

Batch Apex Execution হলো Salesforce-এ বড় ডেটাসেট প্রক্রিয়াকরণের একটি প্রক্রিয়া, যা ডেটাকে ছোট ছোট অংশে ভাগ করে কার্যসম্পাদনা করে। এতে তিনটি ধাপ রয়েছে: start, execute, এবং finish

1. Start Method

Start Method ডেটা সংগ্রহ করে প্রক্রিয়াকরণের জন্য প্রস্তুত করে। এখানে SOQL কুয়েরির মাধ্যমে প্রক্রিয়াকরণের জন্য ডেটা সিলেক্ট করা হয়।

global Database.QueryLocator start(Database.BatchableContext BC) {
    return Database.getQueryLocator('SELECT Id, Name FROM Account');
}
  • Database.QueryLocator: এটি SOQL কুয়েরির রেকর্ড রিটার্ন করে যা প্রক্রিয়াকরণের জন্য নির্বাচন করা হয়।

2. Execute Method

Execute Method প্রক্রিয়াকরণের মূল অংশ, যা ব্যাচে নির্দিষ্ট কাজ চালায়। এখানে ছোট ব্যাচে ডেটা প্রসেস করে এবং প্রয়োজনীয় DML অপারেশন চালানো হয়।

global void execute(Database.BatchableContext BC, List<SObject> scope) {
    for (SObject s : scope) {
        Account acc = (Account) s;
        acc.Name = acc.Name + ' - Processed';
    }
    update scope;
}
  • scope Parameter: ব্যাচে ছোট অংশে বিভক্ত রেকর্ডসমূহ scope প্যারামিটার হিসেবে প্রদান করা হয়।

3. Finish Method

Finish Method সমস্ত ব্যাচ সম্পন্ন হওয়ার পরে চূড়ান্ত কাজ সম্পন্ন করে, যেমন লগিং, নোটিফিকেশন, বা ডেটা সংরক্ষণ করা।

global void finish(Database.BatchableContext BC) {
    System.debug('Batch process completed.');
}

Batch Size Optimization

Batch Size Optimization হল এমন একটি কৌশল যা ব্যাচের সঠিক সাইজ নির্ধারণ করে, যাতে গভর্নর লিমিট মেনে কার্যক্ষমতা নিশ্চিত হয়। Salesforce-এ ডিফল্ট ব্যাচ সাইজ হলো ২০০, কিন্তু বড় ডেটাসেট বা ভারী প্রক্রিয়াকরণের জন্য এই সাইজ প্রয়োজন অনুযায়ী পরিবর্তন করা যায়।

Batch Size Optimization এর কারণ

  1. গভর্নর লিমিট মেনে চলা: ছোট ব্যাচ সাইজ গভর্নর লিমিটের মধ্যে কাজ সম্পন্ন করতে সহায়ক।
  2. কার্যক্ষমতা বৃদ্ধি: সঠিক ব্যাচ সাইজের মাধ্যমে ব্যাচ অপ্টিমাইজ করে কার্যক্ষমতা বাড়ানো যায়।
  3. সিস্টেম স্টেবিলিটি নিশ্চিত: বড় সাইজের কারণে সিস্টেমে অতিরিক্ত লোড পড়তে পারে, যা সিস্টেমকে অস্থিতিশীল করতে পারে।

Batch Size নির্বাচন করার সময় বিবেচনা করার বিষয়

  1. SOQL এবং DML লিমিট: প্রতি ব্যাচে SOQL এবং DML লিমিটের কথা বিবেচনা করে ব্যাচ সাইজ নির্ধারণ করতে হবে।
  2. ব্যাচে প্রক্রিয়াকরণের লজিক: ভারী লজিকের জন্য ছোট ব্যাচ সাইজ রাখা উত্তম।
  3. ডেটা ভলিউম: বড় ডেটাসেট প্রক্রিয়াকরণের সময় ছোট ব্যাচ সাইজ নিশ্চিত করে কার্যকারিতা।
  4. Governor Limits: ১০০ টির কম সাইজ বড় ব্যাচ প্রক্রিয়াকরণের জন্য কার্যকরী।

উদাহরণ: Batch Size সেট করা

Database.executeBatch(new BatchExample(), 100);
  • 100: এখানে ব্যাচ সাইজ ১০০ সেট করা হয়েছে, যা গভর্নর লিমিট মেনে চলতে সহায়ক।

Batch Size Optimization এর ভালো অনুশীলন

ভারী লজিকের জন্য ছোট ব্যাচ সাইজ ব্যবহার করুন: বড় ব্যাচের জন্য ৫০ বা ১০০ এর মতো ছোট সাইজ কার্যক্ষমতা বাড়াতে পারে।

Testing এবং Monitoring ব্যবহার করুন: ছোট থেকে বড় সাইজের মধ্যে বিভিন্ন ব্যাচ সাইজ টেস্ট করে কার্যক্ষমতা পরীক্ষা করুন।

ব্যাচ সাইজকে ডায়নামিকভাবে সেট করুন: বিভিন্ন পরিস্থিতি অনুযায়ী ব্যাচ সাইজ নির্ধারণ করতে ডায়নামিক অপশন ব্যবহার করা যায়।

Exception Handling যুক্ত করুন: গভর্নর লিমিট অতিক্রম এড়াতে Exception Handling নিশ্চিত করুন।

Database.Stateful ব্যবহার করুন: Database.Stateful ব্যবহার করে ব্যাচ সাইজের সঠিকতা এবং ডেটা স্টেট ট্র্যাক করা যেতে পারে।

উদাহরণ: Stateful Batch Apex

global class StatefulBatchExample implements Database.Batchable<SObject>, Database.Stateful {
    global Integer processedRecords = 0;

    global Database.QueryLocator start(Database.BatchableContext BC) {
        return Database.getQueryLocator('SELECT Id, Name FROM Account');
    }

    global void execute(Database.BatchableContext BC, List<SObject> scope) {
        for (SObject s : scope) {
            Account acc = (Account) s;
            acc.Name = acc.Name + ' - Processed';
            processedRecords++;
        }
        update scope;
    }

    global void finish(Database.BatchableContext BC) {
        System.debug('Total Records Processed: ' + processedRecords);
    }
}
  • Database.Stateful: এখানে Stateful ইন্টারফেস ব্যবহার করে ব্যাচ প্রসেসিং চলাকালীন ডেটা স্টেট ট্র্যাক রাখা হয়েছে।

Batch Apex Execution এর সময় সতর্কতা

  1. ব্যাচে বড় SOQL বা DML এড়িয়ে চলুন: একাধিক SOQL বা DML অপারেশন একত্রে না করে ছোট ব্যাচে বিভক্ত করুন।
  2. Governor Limit মনিটরিং: Batch Apex পরিচালনার সময় গভর্নর লিমিট মেনে চলুন।
  3. সঠিক Logging এবং Monitoring নিশ্চিত করুন: ব্যাচ প্রসেসিংয়ের সময় সঠিকভাবে লগিং এবং মনিটরিং নিশ্চিত করুন।

সারসংক্ষেপ

Batch Apex Execution Salesforce-এ বড় ডেটাসেট প্রক্রিয়াকরণের একটি কার্যকরী পদ্ধতি, যা তিনটি মেথড (start, execute, এবং finish) দ্বারা কাজ করে। Batch Size Optimization গভর্নর লিমিট মেনে চলা এবং কার্যক্ষমতা নিশ্চিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ। ছোট ব্যাচ সাইজ ভারী প্রক্রিয়াকরণের জন্য কার্যকরী এবং বড় ব্যাচের জন্য বেশি কার্যক্ষম। সঠিক ব্যাচ সাইজ নির্বাচন, Exception Handling, এবং Logging নিশ্চিত করে Batch Apex Execution আরও কার্যকরী করা সম্ভব।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion